Assertion Roulette(XXX):It is hard to tell which of several assertions within the same test method
caused a test failure. Includes Eager Test, Missing Assertion Message. |
Behavior Smells(XXX):Smells that jump out at you while running tests. |
Buggy Tests(XXX):Bugs are regularly found in the automated tests. |
Code Smells(XXX):Smells that are found while looking at test code. |
Conditional Test Logic(XXX):A test contains code that may or may not be executed Includes Complex Teardown, Conditional Verification Logic, Flexible Test, Indented Test Code, Multiple Test Conditions, Production Logic in Test. |
Developers Not Writing Tests(XXX):Developers aren't writing automated tests. Includes Not Enough Time, Wrong Test Automation Strategy. |
Erratic Test(XXX):One or more tests are behaving erratically; sometimes they pass and sometimes
they fail. Includes Interacting Test Suites, Interacting Tests, Lonely Test, Nondeterministic Test, Resource Leakage, Resource Optimism, Test Run War, Unrepeatable Test. |
Fragile Test(XXX):A test fails to compile or run when the SUT is changed in ways that
do not affect the part the test is exercising. Includes Behavior Sensitivity, Context Sensitivity, Data Sensitivity, Fragile Fixture, Interface Sensitivity, Overcoupled Test, Overspecified Software, Sensitive Equality. |
Frequent Debugging(XXX):Manual debugging is required to determine the cause of most test
failures. Includes Manual Debugging. |
Hard-to-Test Code(XXX):Code is difficult to test. Includes Asynchronous Code, Hard-Coded Dependency, Highly Coupled Code, Untestable Test Code. |
High Test Maintenance Cost(XXX):Too much effort is spent maintaining existing tests. |
Manual Intervention(XXX):A test requires a person to perform some manual action each time it is
run. Includes Manual Event Injection, Manual Fixture Setup, Manual Result Verification. |
Obscure Test(XXX):It is difficult to understand the test at a glance. Includes Complex Test, General Fixture, Hard-Coded Test Data, Indirect Testing, Irrelevant Information, Long Test, Mystery Guest, Verbose Test. |
Production Bugs(XXX):We find too many bugs during formal test or in production. Includes Infrequently Run Tests, Lost Test, Missing Unit Test, Neverfail Test, Untested Code, Untested Requirement. |
Project Smells(XXX):Smells that a project manager can watch out for. |
Slow Tests(XXX):The tests take too long to run. Includes Asynchronous Test, Slow Component Usage, Too Many Tests. |
Test Code Duplication(XXX):The same test code is repeated many times. Includes Cut-and-Paste Code Reuse, Reinventing the Wheel. |
Test Logic in Production(XXX):The code that is put into production contains logic that should be
exercised only during tests. Includes Equality Pollution, For Tests Only, Test Dependency in Production. |